#pragma once

#include "Camera.h"

#define ORBITCAMERA_PITCH_DEFAULT			PI / 8
#define ORBITCAMERA_PITCH_MAXIMUM			PI / 2
#define	ORBITCAMERA_PITCH_MINIMUM			-ORBITCAMERA_PITCH_MAXIMUM
#define	ORBITCAMERA_PITCH_RAMP				8
#define	ORBITCAMERA_YAW_RAMP				ORBITCAMERA_PITCH_RAMP
#define ORBITCAMERA_DISTANCE_DEFAULT		128
#define ORBITCAMERA_DISTANCE_MAXIMUM		512
#define	ORBITCAMERA_DISTANCE_MINIMUM		0
#define ORBITCAMERA_DISTANCE_RAMP			8
#define	ORBITCAMERA_DISTANCE_STEP			32
#define ORBITCAMERA_MOUSE_SENSITIVITY		0.25f

class OrbitCamera : public Camera
{
public:
	OrbitCamera();
public:
	~OrbitCamera();
public:
	virtual void		Update(float elapsedTime);
	void				ResetRotation();
	void				ResetDistance();
private:
	float				m_fPitch;
	float				m_fPitchTarget;
	float				m_fYaw;
	float				m_fYawTarget;
	float				m_fDistance;
	float				m_fDistanceTarget;
};